package com.zaodei.rxjob.job.admin.core.model;

import java.util.Date;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import com.zaodei.rxjob.common.base.BaseEntity;

/**
 * xxl-job info
 *
 * @author xuxueli 2016-1-12 18:25:49
 */
public class XxlJobInfo  extends BaseEntity{
    private static final long serialVersionUID = 1L;
	private int id; // 主键ID (JobKey.name)

	private int jobGroup; // 执行器主键ID (JobKey.group)
	private String jobCron; // 任务执行CRON表达式 【base on quartz】
	private String jobDesc;

	private Date addTime;
	private Date updateTime;

	private String author; // 负责人
	private String alarmEmail; // 报警邮件

	private String executorRouteStrategy; // 执行器路由策略
	private String executorHandler; // 执行器，任务Handler名称
	private String executorParam; // 执行器，任务参数
	private String executorBlockStrategy; // 阻塞处理策略
	private int executorTimeout; // 任务执行超时时间，单位秒
	private int executorFailRetryCount; // 失败重试次数

	private String glueType; // GLUE类型 #com.zaodei.rxjob.job.core.glue.GlueTypeEnum
	private String glueSource; // GLUE源代码
	private String glueRemark; // GLUE备注
	private Date glueUpdatetime; // GLUE更新时间

	private String childJobId; // 子任务ID，多个逗号分隔

	// copy from quartz
	private String jobStatus; // 任务状态 【base on quartz】

	// 扩展项目字段
	private Long projectId;

	// 扩展userId
	private Long userId;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getJobGroup() {
		return jobGroup;
	}

	public void setJobGroup(int jobGroup) {
		this.jobGroup = jobGroup;
	}

	public String getJobCron() {
		return jobCron;
	}

	public void setJobCron(String jobCron) {
		this.jobCron = jobCron;
	}

	public String getJobDesc() {
		return jobDesc;
	}

	public void setJobDesc(String jobDesc) {
		this.jobDesc = jobDesc;
	}

	public Date getAddTime() {
		return addTime;
	}

	public void setAddTime(Date addTime) {
		this.addTime = addTime;
	}

	public Date getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}

	public String getAuthor() {
		return author;
	}

	public void setAuthor(String author) {
		this.author = author;
	}

	public String getAlarmEmail() {
		return alarmEmail;
	}

	public void setAlarmEmail(String alarmEmail) {
		this.alarmEmail = alarmEmail;
	}

	public String getExecutorRouteStrategy() {
		return executorRouteStrategy;
	}

	public void setExecutorRouteStrategy(String executorRouteStrategy) {
		this.executorRouteStrategy = executorRouteStrategy;
	}

	public String getExecutorHandler() {
		return executorHandler;
	}

	public void setExecutorHandler(String executorHandler) {
		this.executorHandler = executorHandler;
	}

	public String getExecutorParam() {
		return executorParam;
	}

	public void setExecutorParam(String executorParam) {
		this.executorParam = executorParam;
	}

	public String getExecutorBlockStrategy() {
		return executorBlockStrategy;
	}

	public void setExecutorBlockStrategy(String executorBlockStrategy) {
		this.executorBlockStrategy = executorBlockStrategy;
	}

	public int getExecutorTimeout() {
		return executorTimeout;
	}

	public void setExecutorTimeout(int executorTimeout) {
		this.executorTimeout = executorTimeout;
	}

	public int getExecutorFailRetryCount() {
		return executorFailRetryCount;
	}

	public void setExecutorFailRetryCount(int executorFailRetryCount) {
		this.executorFailRetryCount = executorFailRetryCount;
	}

	public String getGlueType() {
		return glueType;
	}

	public void setGlueType(String glueType) {
		this.glueType = glueType;
	}

	public String getGlueSource() {
		return glueSource;
	}

	public void setGlueSource(String glueSource) {
		this.glueSource = glueSource;
	}

	public String getGlueRemark() {
		return glueRemark;
	}

	public void setGlueRemark(String glueRemark) {
		this.glueRemark = glueRemark;
	}

	public Date getGlueUpdatetime() {
		return glueUpdatetime;
	}

	public void setGlueUpdatetime(Date glueUpdatetime) {
		this.glueUpdatetime = glueUpdatetime;
	}

	public String getChildJobId() {
		return childJobId;
	}

	public void setChildJobId(String childJobId) {
		this.childJobId = childJobId;
	}

	public String getJobStatus() {
		return jobStatus;
	}

	public void setJobStatus(String jobStatus) {
		this.jobStatus = jobStatus;
	}

	public Long getProjectId() {
		return projectId;
	}

	public void setProjectId(Long projectId) {
		this.projectId = projectId;
	}

	public Long getUserId() {
		return userId;
	}

	public void setUserId(Long userId) {
		this.userId = userId;
	}
    
	@Override
	public String toString() {
		 return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
         .append("id", getId())
         .append("jobGroup", getJobGroup())
         .append("jobCron", getJobCron())
         .append("jobDesc", getJobDesc())
         .append("addTime", getAddTime())
         .append("author", getAuthor())
         .append("alarmEmail", getAlarmEmail())
         .append("executorRouteStrategy", getExecutorRouteStrategy())
         .append("executorHandler", getExecutorHandler())
         .append("executorParam", getExecutorParam())
         .append("executorBlockStrategy", getExecutorBlockStrategy())
         .append("executorTimeout", getExecutorTimeout())
         .append("executorFailRetryCount", getExecutorFailRetryCount())
         .append("glueType", getGlueType())
         .append("glueSource", getGlueSource())
         .append("glueRemark", getGlueRemark())
         .append("glueUpdatetime", getGlueUpdatetime())
         .append("childJobId", getChildJobId())
         .append("jobStatus",getJobStatus())
         .append("projectId", getProjectId())
         .append("userId", getUserId())
         .toString();
	}
}